/**
 * Created on [2019/1/1 下午12:20] by lidi
 * <p>
 * 项目名称: gaia-commons
 * <p>
 * 本程序版权属于福建慧政通信息科技有限公司所有。
 * <p>
 * 任何组织和个人未经福建慧政通信息科技有限公司许可与授权,不得擅自传播、复制、更改该程序的内容。
 * 本程序受版权法和国际条约的保护。如未经授权而擅自复制或传播本程序(或其中任何部分),
 * 将受到严厉的刑事及民事制裁，并将在法律许可的范围内受到最大可能的起诉!
 * <p>
 * ©2019 福建慧政通信息科技有限公司
 */

package com.lry.util.captcha2;

import java.awt.Font;
import java.awt.Graphics2D;
import java.util.concurrent.ThreadLocalRandom;

/**
 * 圆形干扰图像验证码。
 *
 * @author 李迪
 */
public class CircleImageCaptcha extends BaseImageCaptcha {

    /**
     * 默认构造函数。
     */
    public CircleImageCaptcha() {
    }

    /**
     * 通过图像验证码的宽度、高度构造图像验证码对象。
     *
     * @param width  图像验证码的宽度（px）
     * @param height 图像验证码的宽度（px）
     */
    public CircleImageCaptcha(int width, int height) {
        super(width, height);
    }

    /**
     * 通过图像验证码的宽度、高度、字体构造图像验证码对象。
     *
     * @param width  图像验证码的宽度（px）
     * @param height 图像验证码的宽度（px）
     * @param font   图像验证码所用的字体。
     */
    public CircleImageCaptcha(int width, int height, Font font) {
        super(width, height, font);
    }

    /**
     * 绘制干扰图形。
     *
     * @param g2d 图形上下文。
     */
    @Override
    protected void drawInterfere(Graphics2D g2d) {
        final ThreadLocalRandom random = ThreadLocalRandom.current();
        for (int i = 0; i < interfereCount; i++) {
            g2d.setColor(randomColor(random));
            g2d.drawOval(random.nextInt(width), random.nextInt(height), random.nextInt(height >> 1),
                         random.nextInt(height >> 1));
        }
    }
}
